package controller;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;

import javax.swing.JFileChooser;
import javax.swing.text.BadLocationException;

import view.AProposUI;
import view.AideUI;
import view.EditeurActionUI;
import view.EditeurUI;
import view.ZoneDessin;

public class EditeurActionController {
	
	//Variables
	EditeurActionUI editeurActionUI;
	String pathfile = "";
	EditeurUI editeur;
	ZoneDessin feuille;
	
	//Constructeur
	public EditeurActionController(EditeurUI editeur, ZoneDessin feuille){
		this.editeur = editeur;
		this.feuille = feuille;
	}
	
	public void doUndo(){
		editeur.getUndoManager().undo();
	}
	
	public void doRedo(){
		editeur.getUndoManager().redo();
	}
	
	public void doSave(){
		 if(!pathfile.equals(""))
	            save(pathfile);
	        else
	            saveas();
	}
	
	public void doOpen(){
		String directory = System.getProperty("user.dir");
        JFileChooser chooser = new JFileChooser(directory);
        chooser.removeChoosableFileFilter(chooser.getFileFilter());
        if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
            pathfile = chooser.getSelectedFile().getAbsolutePath();
            open(pathfile);
            editeur.getUndoManager().discardAllEdits();
        }
	
	}
	
	public void doNouv(){
		//pathfile = "";
		try {
			editeur.getDocument().remove(0,editeur.getDocument().getLength());
		} catch (BadLocationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//open(pathfile);
		editeur.getUndoManager().discardAllEdits();
		feuille.reset();

	}
	
	 public void open(String pathfile) {
	        try {
	            if(!pathfile.equals("")) {
	                File file = new File(pathfile);
	                FileInputStream fileStream = new FileInputStream(file);
	                //editeur.getDocument().removeUndoableEditListener(this);
	                editeur.read(fileStream, editeur);
	                //editeur.setDoc(editeur.getStyledDocument());
	                //editeur.setCourant(editeur.getDoc().getText(0, editor.getDoc().getLength()));
	                //editeur.colorise(true);
	                //editeur.getDoc().addUndoableEditListener(this);
	            } else if(pathfile.equals("")) {
	            	editeur.getDocument().remove(0, editeur.getDocument().getLength());
	            	//editeur.setCourant("");
	            }
	        } catch(Exception e) {
	            e.printStackTrace();
	        }
	    }
	 
	 public void save(String pathfile) {
	        try {
	            String text = editeur.getDocument().getText(0, editeur.getDocument().getLength());
	            text = text.replaceAll("\\n", "\r\n");
	            File file = new File(pathfile);
	            FileWriter fileWriter = new FileWriter(file);
	            fileWriter.write(text);
	            fileWriter.close();
	        } catch(Exception e) {
	            e.printStackTrace();
	        }
	    }
	    
	    public void saveas() {
	        String directory = System.getProperty("user.dir");
	        JFileChooser chooser = new JFileChooser(directory);
	        chooser.removeChoosableFileFilter(chooser.getFileFilter());
	        if (chooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
	            pathfile = chooser.getSelectedFile().getAbsolutePath();
	            if(!pathfile.endsWith(".logo"))
	                pathfile += ".logo";
	            save(pathfile);
	        }
	    }
	    
	    	    
	    public void doReset(){
	    	editeur.setText("");
	    }
	    
	    public void doHelp(){
	    	AideUI help = new AideUI();
	    }
	    
	    public void doAPropos(){
	    	AProposUI aPropos = new AProposUI();
	    }
	    public void doExit(){
	    	System.exit(0);
	    }
}
